ברשימה מקושרת איך להחזיר את האיבר במקום ה-X לפני האחרון באופן היעיל ביותר
תשובות
הוסף תשובה
|
לצפיה בתשובות
דצמבר 2017
פתרון 1: לעבור על כל הרשימה פעם אחת ולחשב את אורכה (N). אח"כ לעבור פעם שנייה ולרוץ (N-X) פעמים עד שמגיעים לאיבר הרצוי.
פתרון 2: להשתמש ב-2 פוינטרים. מקדמים את הראשון X איברים. אחר-כך מקדמים את שניהם במקביל (איבר אחד בכל פעם) עד שהראשון מגיע לסוף.
שתי הפתרונות הם בסיבוכיות O של N, אבל בשני עוברים רק פעם אחת על הרשימה.
ישנם שני שלבים לפני הראיון עם צוות ה HR.
במבחן קצר כרבע שעה על משולשים וחוקיות של תוכנה מסוימת עם פרטי התוכנית לגבי קלט של 3 צלעות(ובהמשך גם זוויות) ופלט האם שווה שוקיים רגיל או שווה צלעות. מספרים שלמים ושברים.
מיד אחריו מבחן נוסף של כשעה וחצי על IP אינטרנט ותתי רשתות כולל כתובות והקצאה וכו...
BROADCAST,SUBNETING, צריך לדעת את כל החוקים של X.X.X.X/24... וכו...
לאחר מכן (למי שעובר את שני המבחנים הנ״ל) יש מבחן בו צריך להגדיר ראוטר מאפס שישדר וויפי וישאפשר התחברות לינטרנט
What is a's value if this code is running in two threads?
int a = 0; // shared variable
for (int i=0; i<10; i++){
a++;
}
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2016
בין 2 ל-20
ספטמבר 2016
למה 2? אני חישבתי מ5 עד 20.
ינואר 2017
בין 2 ל-20 (כולל!) היא התשובה הנכונה. תרחיש: 1) התחלתי מ-thread1, קראתי ערך 0. 2) מעבר ל-thread2, קראתי גם כן ערך 0. 3) מעבר ל-thread1, אני רץ כעת על ה-for עד שהגעתי לערך 9 (כולל). 4) מעבר ל-thread2, מעדכן את a=1 (זה מה שהיה שמור אצלו ועדיין לא ביצע עדכון בזיכרון) ורץ על thread2 עד סוף הלולאה. 5) עבור האיטרציה ה-10 של thread1 נעדכן את a=2 וסיימנו את ההרצה. מקווה שזה עזר
דצמבר 2017
נקודה נוספת שיכולה לתת קרדיט מול מראיין:
בגלל שהמשתנה הגלובלי לא מוגדר כ-volatile, אז כנראה שקומפיילר מודרני יהפוך את הקוד ליעיל יותר ולא יריץ את הלולאה, אלא פשוט ישנה את הערך של i ל-10 כבר בהתחלה (i+=10)..
עוסקת בפיתוח תוכנה לאבטחת מידע - תוכנות חומת אש ו־VPN.בסיסה הבינלאומי נמצא ברדווד סיטי, קליפורניה, ומרכזי הפיתוח נמצאים בתל אביב ובבלארוס.החברה נוסדה בשנת 1993 על ידי שלמה קרמר, מריוס נכט וגיל שוויד.